iT邦幫忙

2022 iThome 鐵人賽

DAY 22
0

https://ithelp.ithome.com.tw/upload/images/20220912/20151958IFjRs0xIZ4.png Medium 好讀版


畫面或 UI state 會包含畫面上要顯示的內容 (例如日記清單)。由於這個狀態含有應用程式資料,因此通常連結著 app 架構的其他層。

此系列文章是以我的業餘專案: Kimoji 作為範例。
這款以純 Jetpack Compose 撰寫的 side project,已經在 Google Play 上架。 歡迎試玩!

https://ithelp.ithome.com.tw/upload/images/20220907/20151958vXuPLv4aki.png 立馬下載

UI state 可以描述畫面上要顯示的內容,而應用程式邏輯可以描述應用程式的行為,以及如何回應狀態變更。我們撰寫的邏輯有兩種類型: UI 邏輯(或稱 UI 行為),以及事務邏輯。

  • UI 邏輯和「如何顯示」畫面上的狀態變更有關 (例如 navigation 邏輯或顯示 Snackbar)。
  • 事務邏輯則是「如何處理」狀態變更 (例如付款或儲存使用者的設定)。這些邏輯通常位於 domain 或 data layer,不會在 UI layer。

ViewModel 會提供 UI 狀態,並能存取應用程式其他層的事務邏輯。另外 ViewModel 也能在 configuration changes 後繼續保留,所以生命週期比 Composition 要長。ViewModel 可以 follow ActivityFragment,以及 Navigation graph destination 的 lifecycle。

如果想深入瞭解 UI 層架構,請參閱 UI layer 說明文件

注意:ViewModel 並非 Composition 的一部分。因此我們不應該在 ViewModel 裡去持有 composables 內建立的狀態 (例如 remembered value),這樣做可能會導致 memory leaks。

此系列文章是以我的業餘專案:Kimoji 為範例。

Kimoji 是一款心情日記 App,讓你用可愛的 emoji 來撰寫你的心情日記。現在就來試試這款設計精美的微日記吧!

https://ithelp.ithome.com.tw/upload/images/20220907/20151958vXuPLv4aki.png 立馬下載

Reference: https://developer.android.com/codelabs/jetpack-compose-state


上一篇
可觀察的 MutableList 應用篇
下一篇
將 data 和 event 遷移到 ViewModel
系列文
Kimoji:以 Jetpack Compose 實作一款「心情日記」應用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言